Multiprocessing or multiprocessor systems involve the use of two or more central processing units (CPUs) in a single system. For example, an integrated circuit (IC), such as an application specific integrated circuit (ASIC), field programmable gate array (FPGA), or the like may have multiple microprocessors embedded therein that are capable of being used for multiprocessing. The microprocessors can be multiple distinct microprocessors, or multiple cores of a single microprocessor. Microprocessors have various interfaces used to send and receive information, including memory interfaces.
Microprocessors can have memory interfaces to various types of memory, including cache memory, local memory, main memory or the like, where the different types of memory can be differentiated by latency and/or function. For example, cache memory is low latency memory used to cache information stored in main memory so that it is more readily accessible by the microprocessor. Main memory is higher latency memory capable of storing larger amounts of information than cache memory. Local memory can be low latency memory (similar to cache memory) that does not operate as a cache. For example, some microprocessors having the ARM® architecture include what are known as “tightly coupled memory” interfaces that can be used to access low latency (non-cache) memory. In multiprocessor systems, resources such as memories need to be managed effectively to avoid inefficient or wasteful use thereof.